package com.fa7.trabalho.controller;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

import com.fa7.trabalho.dao.UsuarioDao;
import com.fa7.trabalho.entidades.Usuario;

@ManagedBean
@SessionScoped
public class UsuarioBean implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -7006142995815047087L;
	private Usuario usuario;
	
	@ManagedProperty(name = "usuarioDao", value = "#{usuarioDao}")
	private UsuarioDao usuarioDao;
	
	public UsuarioBean() {
        
    }
	
	@PostConstruct
	public void init(){
		usuario = new Usuario();
        SecurityContext context = SecurityContextHolder.getContext();
        if (context instanceof SecurityContext){
            Authentication authentication = context.getAuthentication();
            if (authentication instanceof Authentication){
            	usuario = getUsuarioDao().findByUsername(((User)authentication.getPrincipal()).getUsername());
            }
        }
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public UsuarioDao getUsuarioDao() {
		return usuarioDao;
	}

	public void setUsuarioDao(UsuarioDao usuarioDao) {
		this.usuarioDao = usuarioDao;
	}
	

}
